As mobile telecommunications devices have become more sophisticated, the number of functions and applications accessible by the devices has increased. Many of the devices offer a graphical user interface containing a multi-tiered menu structure that allows users to select these functions and applications. A user can navigate through the menu structure by selecting a top-level menu item and then making successive selections among the entries in any number of sub-menus until arriving at an entry that launches a desired function or application.
Some devices use an operating system, such as Windows CE or Palm OS, that is designed specifically for handheld devices. In such devices, the operating system might manage the native menu structure of the device. For example, the operating system might offer the user the capability of dynamically making additions, deletions, or other modifications to the menus displayed by the device.
In devices without operating systems such as these, the menu structure might be provided as firmware that is hard-coded into the device at the time of initial setup. When the menu structure is managed by firmware, static menu modifications might be possible but the menus typically cannot be manipulated dynamically. That is, changes to the menu structure typically require an upgrade of the entire set of firmware on the device. For example, the device might be brought into a retail store where a firmware upgrade can be done. In some cases, firmware upgrades can also be made over the air via a wireless Internet connection or other wireless data transmission means. In either case, the changes to the menu structure are static and cannot be made directly by a user in real time.
The firmware on a mobile telecommunications device typically contains multiple configuration files that specify various operating parameters for the device. For example, one configuration file might contain sound settings, another configuration file might contain Internet connection settings, etc. The menu structure for a device and the locations of applications and functions listed in the menu are also typically maintained in a configuration file. When a device is turned on, pointers in the firmware point to the various configuration files and cause the parameters specified in the configuration files to be loaded into the device. When a pointer points to the configuration file for the device's menu structure, the menu is retrieved and displayed on the device's graphical user interface.
When modifications are to be made to a device's menu structure through a static firmware upgrade, the new menu configuration information is typically transmitted to a new directory or new configuration file within the device firmware. A validation can then be performed to ensure that the configuration data was successfully delivered into the directory or configuration file. The configuration information is placed in a new directory or a new configuration file rather than overwriting the old configuration file so that if a transmission failure occurs, the old configuration file is not lost.
If the transmission is successful, the pointer to the menu structure is changed to point to the directory or configuration file containing the new menu configuration information. Thereafter, the new menu structure will be retrieved and displayed when the device is turned on.
FIG. 1 illustrates the above described process for modifying the menus of a device where the menu structure of the device is managed by firmware rather than by an operating system. A mobile telecommunications device 5 contains firmware 10 and a graphical user interface 90. The firmware 10 contains a set of pointers 20 and various configuration files for the device. Before the menu modification is made, three configuration files 30, 40, and 50 are shown provided on the firmware 10. In this case configuration file 50 holds the settings for the menu structure of the device. That is, the items listed in the device's menus, the nesting structure of those items, and the locations of the files to which those items refer are all contained in configuration file 50.
When the device is turned on, a startup sequence calls the pointers in the set of pointers 20. This causes the parameters in the configuration files 30, 40, and 50 to be loaded into the active memory of the device 5. In particular, pointer 55 causes the menu structure in configuration file 50 to be sent, via path 95, to the graphical user interface 90 where the menus are then displayed.
When a change in the menu structure of the device 5 is desired, a new configuration file 60 is added. The new menu parameters are transmitted to configuration file 60 and the transmission is validated. Upon validation, the pointer 55 that previously pointed to configuration file 50 is adjusted to point to configuration file 60. Thereafter, pointer 55 will cause the menu structure in configuration file 60 to be sent, via path 105, to the graphical user interface 90 where the modified menus will then be displayed. The addition of configuration file 60 and the adjustment of pointer 55 to point to configuration file 60 instead of configuration file 50 typically requires that an update of the entire set of firmware 10 on the device 5 be performed.
Changes made to the menu configuration files in this manner are static. That is, the menu configuration files cannot be changed directly by the user or by applications on the device. If further changes are to be made, the process of delivering a new configuration file, validating the delivery, and changing the pointer to point to the new configuration file must be repeated.